package com.station.search.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.station.search.common.util.MathUtils;
import com.station.search.constant.DeleteEnum;
import com.station.search.domain.converter.StationInfoConverter;
import com.station.search.domain.pojo.BaseField;
import com.station.search.domain.vo.StationInfoVO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author: JT
 * @date: 2021/8/31
 * @Title:  台站信息表
 */
@Setter
@Getter
@ToString
@TableName(value = "STATION_INFO", autoResultMap = true)
public class StationInfo implements Serializable {

    private Long id;
    /** 台站编号 */
    private String stationCode;
    /** 台站名称 */
    private String stationName;
    /** 台站类型 */
    private String stationType;
    /** 台站级别 */
    private String stationLevel;
    /** 台站位置 */
    private String location;
    /** 海拔 */
    private Double altitude;
    /** 站点离地面高度 */
    private Double heightAboveGround;
    /** 气压高度 */
    private Double pressAltitude;
    /** 品牌 */
    private String trademark;
    /** 型号 */
    private String model;
    /** 经度 */
    private Double lon;
    /** 经度_单位 */
    private String lonUnit;
    /** 经度_度 */
    private Double lonDegrees;
    /** 经度_分 */
    private Double lonMinute;
    /** 经度_秒 */
    private Double lonSecond;
    /** 纬度 */
    private Double lat;
    /** 纬度_单位 */
    private String latUnit;
    /** 纬度_度 */
    private Double latDegrees;
    /** 纬度_分 */
    private Double latMinute;
    /** 纬度_秒 */
    private Double latSecond;
    /** GEO HASH 位置 */
    private Object whereIs;
    /** 区域 */
    private String area;
    /** 街道办 */
    private String streetOffice;
    /** 站点联系人 */
    private String stationContact;
    /** 站点联系人电话 */
    private String stationContactNumber;
    /** 巡检周期 */
    private Integer checkCycle;
    /** 最后巡检人员 */
//    private String checkLast;
    /** 最后巡检日期 */
//    private Date checkLastDate;
    /** 抢修时间 */
    private Integer repairDate;
    /** 主管人员 */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<BaseField> manager;
    /** 维护公司 */
    private String checkCompany;
    /** 维护人员 */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<BaseField> checkPeople;
    /** 是否已删除 */
    private char isDeleted = DeleteEnum.NOT_DELETED.getValue();
    /** 删除时间 */
    private Date deletedDate;

    public static StationInfo parseVo2Db(StationInfoVO stationInfoVO) {
        StationInfo stationInfo = StationInfoConverter.INSTANCE.voToDo(stationInfoVO);

        // 计算度分秒 -- 转换为度值
        stationInfo.setLon(
                MathUtils.keep8Decimal(
                        stationInfoVO.getLonDegrees() + stationInfoVO.getLonMinute() / 60 + stationInfoVO.getLonSecond() / 60 / 60
                )
        );
        stationInfo.setLat(
                MathUtils.keep8Decimal(
                        stationInfoVO.getLatDegrees() + stationInfoVO.getLatMinute() / 60 + stationInfoVO.getLatSecond() / 60 / 60
                )
        );
        return stationInfo;
    }
}
